import java.util.Scanner;
import java.util.Arrays;
/*nums1 中数字 x 的 下一个更大元素 是指 x 在 nums2 中对应位置 右侧 的 第一个 比 x 大的元素。
给你两个 没有重复元素 的数组 nums1 和 nums2 ，下标从 0 开始计数，其中nums1 是 nums2 的子集。
对于每个 0 <= i < nums1.length ，找出满足 nums1[i] == nums2[j] 的下标 j ，
并且在 nums2 确定 nums2[j] 的 下一个更大元素 。如果不存在下一个更大元素，那么本次查询的答案是 -1 。
返回一个长度为 nums1.length 的数组 ans 作为答案，满足 ans[i] 是如上所述的 下一个更大元素 。
输入：nums1 = [4,1,2], nums2 = [1,3,4,2].
输出：[-1,3,-1]*/
public class Main {
    public static int[] comparenums(int[] nums1, int[] nums2) {
        int n = nums1.length;
        int m = nums2.length;
        int[] nums = new int[n];
        for (int i = 0; i < n; i++) {
            int temp = seek(nums1[i], nums2);
            nums[i] = -1;
            for (int j = temp + 1; j < m; j++) {
                if (nums1[i] < nums2[j]) {
                    nums[i] = nums2[j];
                    break;//立即跳出避免重复查找
                }
            }
        }
        return nums;
    }

    public static int seek(int n, int[] nums2) {
        for (int i = 0; i < nums2.length; i++) {
            if (nums2[i] == n) return i;
        }
        return 0;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] nums1 = new int[n];
        for (int i = 0; i < n; i++) {
            nums1[i] = sc.nextInt();
        }
        int m = sc.nextInt();
        int[] nums2 = new int[m];
        for (int i = 0; i < m; i++) {
            nums2[i] = sc.nextInt();
        }
        int[] ans = comparenums(nums1, nums2);
        System.out.println(Arrays.toString(ans));
    }
}